3.07. Типы данных в SQL
Разработчику
Аналитику
Тестировщику
Архитектору
Инженеру
Типы данных в SQL
Типы данных определяют, какая информация может храниться в столбце таблицы: числа, текст, даты и т.д. Каждая СУБД поддерживает свои типы, но есть общая классификация.
1. Числовые типы
★ Числовые типы – используются для хранения чисел.
Целые числа:
| Тип | Диапазон | Пример использования |
|---|---|---|
| INT, INTEGER | От -2³¹ до 2³¹-1 (~±2.1 млрд) | Возраст (age INT) |
| SMALLINT | От -32,768 до 32,767 | Количество товаров на складе |
| BIGINT | От -2⁶³ до 2⁶³-1 (огромные числа) | ID в крупных системах |
| TINYINT | От -128 до 127 (или 0 до 255) | Логический флаг (is_active TINYINT(1)) |
Числа с плавающей точкой:
| Тип | Описание | Пример использования |
|---|---|---|
| FLOAT | Приблизительное число (~7 знаков) | Температура |
| DOUBLE | Более точное число (~15 знаков) | Координаты на карте |
| DECIMAL(p, s) | Точное число (p — всего цифр, s — после запятой) | Деньги (DECIMAL(10, 2)) |
2. Строковые типы
★ Строковые типы – для хранения текстов и бинарных данных.
Текстовые типы:
| Тип | Описание | Пример использования |
|---|---|---|
| VARCHAR(n) | Строка переменной длины (до n символов) | Имя (VARCHAR(50)) |
| CHAR(n) | Строка фиксированной длины (дополняется пробелами) | Код страны (CHAR(2)) |
| TEXT | Большой текст (до 65,535 символов) | Описание товара |
| LONGTEXT | Очень большой текст (до 4 ГБ) | Статьи, книги |
Бинарные данные:
| Тип | Описание |
|---|---|
| BLOB | До 65 КБ бинарных данных (изображения, PDF) |
| LONGBLOB | До 4 ГБ бинарных данных |
3. Дата и время
★ Дата и время – для хранения временных меток.
| Тип | Формат | Пример использования |
|---|---|---|
| DATE YYYY-MM-DD Дата рождения | ||
| TIME HH:MM:SS Время события | ||
| DATETIME YYYY-MM-DD HH:MM:SS Дата и время заказа | ||
| TIMESTAMP YYYY-MM-DD HH:MM:SS (с учётом часового пояса) Время последнего входа |
4. Логический тип
★ Логический тип всегда один:
BOOLEAN – TRUE или FALSE (истина или ложь).
5. Особые типы
★ Особые типы:
JSON – хранение данных в JSON поддерживается в некоторых СУБД (MySQL, PostgreSQL):
CREATE TABLE products (
attributes JSON -- Например, {"color": "red", "size": "XL"}
);
ENUM – столбец с предопределёнными значениями (из списка имеющихся):
CREATE TABLE users (
gender ENUM('male', 'female')
);
Соответственно, в зависимости от планируемого содержания, нужно изначально выбрать тип данных для каждого столбца:
- числа – INT;
- деньги – DECIMAL;
- проценты – FLOAT;
- текст фиксированной длины – CHAR;
- переменная длина (имена, описания) – VARCHAR;
- большие тексты – TEXT;
- дата – DATE;
- дата и время – DATETIME.
Пример создания таблицы с разными типами:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
birth_date DATE,
salary DECIMAL(10, 2),
is_manager BOOLEAN,
working_hours TIME,
hire_date TIMESTAMP,
bio TEXT
);
Важно: размер имеет значение. VARCHAR(255) занимает меньше места, чем VARCHAR(1000), даже если в нём короткие строки. Это важно при оптимизации работы и ресурсов. Именно поэтому типов данных так много – под разные цели.